import cv2

#读取图像
image = cv2.imread("opencv_logo.jpg")
#灰度化
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#goodFeaturesToTrack函数返回的是一个二维数组，其中每个元素都是一个二维数组，代表一个角点的坐标。
#例如，corners[0][0]表示第一个角点的x坐标，corners[0][1]表示第一个角点的y坐标。
#corners[1][0]表示第二个角点的x坐标，corners[1][1]表示第二个角点的y坐标，以此类推。
#角点检测
#gray：输入的灰度图像。
#500：检测到的角点的最大数量。
#0.1：角点的质量水平，取值范围在0到1之间。
#10：角点之间的最小距离，用于去除重复的角点。
corners = cv2.goodFeaturesToTrack(gray, 500, 0.1, 10)
#将检测到的角点绘制在图像上
for corner in corners:
    #ravel()函数将多维数组转换为一维数组
    x, y = corner.ravel()
    #绘制圆形
    #image：输入的图像。
    #(int(x), int(y))：圆心的坐标，将x和y转换为整数。
    #3：圆形的半径。
    #(255, 0, 255)：圆形的颜色，这里是紫色。
    #-1：圆形的填充，-1表示填充圆形。
    cv2.circle(image, (int(x), int(y)), 3, (255, 0, 255), -1)
#显示图像
cv2.imshow("corners", image)    
#等待按键
cv2.waitKey()      
#关闭窗口
cv2.destroyAllWindows()